// pages/changMy/changeMy.js
const api = require('../../utils/api');

Page({
  /**
   * 页面的初始数据
   */
  data: {
    avatarUrl: '',       // 当前头像（可能是本地临时路径或OSS路径）
    nickName: '',        // 当前昵称
    originalAvatar: '',  // 初始头像（用于判断是否修改）
    originalName: '',    // 初始昵称（用于判断是否修改）
    canSave: false       // 是否可保存（有修改时为true）
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 从上个页面接收并解码初始头像和昵称
    const avatar = decodeURIComponent(options.avatar || '');
    const nickname = decodeURIComponent(options.nickname || '');
    
    // 初始化数据：保存原始值用于对比
    this.setData({
      avatarUrl: avatar,
      nickName: nickname,
      originalAvatar: avatar,
      originalName: nickname
    });
    console.log('初始头像:', this.data.originalAvatar);
    console.log('初始昵称:', this.data.originalName);
  },

  /**
   * 选择头像
   */
  chooseAvatar() {
    const that = this;
    wx.chooseMedia({
      count: 1,          // 最多选1张
      mediaType: ['image'], // 只选图片
      sizeType: ['original', 'compressed'], // 支持原图/压缩图
      sourceType: ['album', 'camera'], // 支持相册/相机
      success(res) {
        // 获取本地临时文件路径
        const tempFilePath = res.tempFiles[0].tempFilePath;
        console.log('选择的本地图片路径:', tempFilePath);
        // 临时显示本地路径，待上传后更新为OSS路径
        that.setData({
          avatarUrl: tempFilePath
        });
        // 检查是否有修改
        that.checkChange();
      }
    });
  },

  /**
   * 监听昵称输入
   */
  onNameChange(e) {
    this.setData({
      nickName: e.detail.value.trim() // 去除首尾空格
    });
    // 检查是否有修改
    this.checkChange();
  },

  /**
   * 检查是否有修改（控制保存按钮状态）
   */
  checkChange() {
    const { avatarUrl, nickName, originalAvatar, originalName } = this.data;
    // 头像修改：当前路径是本地路径（新选择的图），或与原始OSS路径不同
    const isAvatarChanged = avatarUrl !== originalAvatar;
    // 昵称修改：与原始值不同
    const isNameChanged = nickName !== originalName;
    // 更新保存按钮状态
    this.setData({
      canSave: isAvatarChanged || isNameChanged
    });
    if(isAvatarChanged){
        this.updateAvatarUrl()
    };
  },

  /**
   * 保存用户信息（核心逻辑）
   */
  updateAvatarUrl() {
    const { avatarUrl, nickName, originalAvatar } = this.data;

    // 验证昵称不为空
    if (!nickName.trim()) {
      wx.showToast({ title: '请输入昵称', icon: 'none' });
      return;
    }


    // 判断是否需要上传新头像
    if (avatarUrl !== originalAvatar) {
      // 1. 需要上传新头像：调用api.js中的uploadFiles方法
      const token = wx.getStorageSync('token') || ''; // 获取token（如果需要）
      api.allUse.uploadFiles({
        filePath: avatarUrl,        // 本地临时路径
        businessType: 'user_avatar', // 业务类型：用户头像
        fileType: 'image',          // 文件类型：图片
        token: token                // 可选：Authorization头
      }).then(res => {
            console.log('上传文件接口返回的数据：',res);
            this.setData({
                avatar: res
            })
      }).catch(errMsg => {
        // 上传失败
        wx.hideLoading();
        wx.showToast({ title: errMsg, icon: 'none' });
        console.error('头像上传失败：', errMsg);
      });
    } else {
      // 不需要上传头像：直接使用原始头像更新信息
        console.log('没有修改任何信息');
    }
  },

  saveProfile(){
    const {avatar, nickName} = this.data;
    api.my.changeUserInfo({
        avatar: avatar,
        nickname: nickName
    }).then(res => {
        const data = res.records || res.list || res;
        console.log('提交后返回的数据是：', data);
    })
  },




  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {},

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {},

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {},

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {},

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {},

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {},

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {}
});